package com.example.mybatisplusdemo.config;

import com.baomidou.mybatisplus.core.incrementer.IdentifierGenerator;
import com.example.mybatisplusdemo.utils.IdWorker;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;

/**
 * TODO   自定义主键生成器(是根据数据库自增，还是使用自定义)
 *        在需要使用该自定义ID生成器的实体类上面加上注解属性 @TableId(type = IdType.ASSIGN_ID)
 *
 * @ClassName SnowflakeKeyGenerator
 * @Author xiaojiang
 * @Date 2021/10/25 下午 16:56
 */
@Component
public class SnowflakeKeyGenerator implements IdentifierGenerator {

    @Resource
    private IdWorker idWorker;

    @Override
    public Number nextId(Object entity) {
        //使用雪花ID生成器，生成一个雪花ID
        long nextId = idWorker.nextId();
        System.out.printf("使用自定义ID生成器，生成雪花ID:%s%n", nextId);
        return nextId;
    }
}
